package fr.utbm.gi.in56.error;

/**
 * Enum for error types.
 *
 * @author Adrien Hoffer & Tarik Belabbas
 */
public enum ErrorType
{
	NONE
	{
		@Override
		public String getErrorMessage()
		{
			return "Humm... Il ne devrait pas y avoir d'erreur"; //$NON-NLS-1$
		}
	},
	DB_ERROR
	{
		@Override
		public String getErrorMessage()
		{
			return "Erreur interne avec le serveur"; //$NON-NLS-1$
		}
	},
	WRONG_LOGIN
	{
		@Override
		public String getErrorMessage()
		{
			return "L'identifiant est incorrect"; //$NON-NLS-1$
		}
	},
	WRONG_PASSWORD
	{
		@Override
		public String getErrorMessage()
		{
			return "Le mot de passe est incorrect"; //$NON-NLS-1$
		}
	},
	REGISTER_LOGIN_ALREADY_EXISTS
	{
		@Override
		public String getErrorMessage()
		{
			return "L'identifiant est déjà utilisé"; //$NON-NLS-1$
		}
	},
	REGISTER_PASSWORD_EMPTY
	{
		@Override
		public String getErrorMessage()
		{
			return "Le mot de passe doit contenir au moins un caractère"; //$NON-NLS-1$
		}
	},
	REGISTER_NON_MATCHING_PASSWORDS
	{
		@Override
		public String getErrorMessage()
		{
			return "Les mots de passe ne sont pas identiques"; //$NON-NLS-1$
		}
	},
	REGISTER_LOGIN_EMPTY
	{
		@Override
		public String getErrorMessage()
		{
			return "Le login doit contenir au moins un caractère"; //$NON-NLS-1$
		}
	},
	EDIT_PASSWORD_EMPTY
	{
		@Override
		public String getErrorMessage()
		{
			return "Le mot de passe doit être renseigné afin de modifier vos informations"; //$NON-NLS-1$
		}
	},
	EDIT_INVALID_PASSWORD
	{
		@Override
		public String getErrorMessage()
		{
			return "Le mot de passe est incorrect"; //$NON-NLS-1$
		}
	},
	EDIT_NON_MATCHING_PASSWORDS
	{
		@Override
		public String getErrorMessage()
		{
			return "Les nouveaux mots de passe ne sont pas identiques"; //$NON-NLS-1$
		}
	},
	FIELD_NAN
	{
		@Override
		public String getErrorMessage()
		{
			return "Un champ de type numérique a été rempli avec des caractères non numériques"; //$NON-NLS-1$
		}
	},
	EDIT_TITLE_EMPTY
	{
		@Override
		public String getErrorMessage()
		{
			return "Le titre doit être spécifié"; //$NON-NLS-1$
		}
	},
	EDIT_VEHICLE_DATE
	{
		@Override
		public String getErrorMessage()
		{
			return "Veuillez respecter le continuum espace temps pour les années du véhicule"; //$NON-NLS-1$
		}
	},
	EDIT_VEHICLE_KMS
	{
		@Override
		public String getErrorMessage()
		{
			return "Le nombre de kilomètres maximal doit être supérieur au nombre de kilomètres minimal"; //$NON-NLS-1$
		}
	},
	EDIT_VEHICLE_PRICE
	{
		@Override
		public String getErrorMessage()
		{
			return "Le prix maximal doit être supérieur au prix minimal"; //$NON-NLS-1$
		}
	},
	POST_UPLOAD_MAX_SIZE
	{
		@Override
		public String getErrorMessage()
		{
			return "La taille de la photo dépasse la limite autorisée"; //$NON-NLS-1$
		}
	},
	POST_UPLOAD_INVALID_TYPE
	{
		@Override
		public String getErrorMessage()
		{
			return "Le fichier sélectionné n'est pas une image JPG"; //$NON-NLS-1$
		}
	},
	POST_UPLOAD_FAILED
	{
		@Override
		public String getErrorMessage()
		{
			return "Le téléchargement de la photo a échoué"; //$NON-NLS-1$
		}
	},
	POST_UNABLE_RETRIEVE_CARS_ENERGIES
	{
		@Override
		public String getErrorMessage()
		{
			return "Impossible de récupérer la liste des modèles et des énergies"; //$NON-NLS-1$
		}
	},
	MESSAGE_INVALID_RECIPIENT
	{
		@Override
		public String getErrorMessage()
		{
			return "Le destinataire du message est invalide"; //$NON-NLS-1$
		}
	},
	MESSAGE_AD_CLOSED
	{
		@Override
		public String getErrorMessage()
		{
			return "Vous ne pouvez pas envoyer de message à propos d'une annonce terminée"; //$NON-NLS-1$
		}
	},
	MESSAGE_RECIPIENT_AND_AD_DONT_MATCH
	{
		@Override
		public String getErrorMessage()
		{
			return "Le destinataire et l'annonce concernée par le message ne correspondent pas"; //$NON-NLS-1$
		}
	},
	MESSAGE_CANNOT_SEND_TO_YOURSELF_SERIOUSLY
	{
		@Override
		public String getErrorMessage()
		{
			return "La schizophrénie (et à fortiori l'envoi de messages à soi-même) n'est pas autorisée par la charte d'utilisation, veuillez vous y reporter"; //$NON-NLS-1$
		}
	},
	MESSAGE_INVALID_MSG_TYPE
	{
		@Override
		public String getErrorMessage()
		{
			return "Le type du message n'est pas valide"; //$NON-NLS-1$
		}
	},
	MESSAGE_INVALID_AD_TYPE
	{
		@Override
		public String getErrorMessage()
		{
			return "Le type de l'annonce n'est pas valide"; //$NON-NLS-1$
		}
	},
	MESSAGE_INVALID_AD
	{
		@Override
		public String getErrorMessage()
		{
			return "Le numéro d'annonce n'est pas valide"; //$NON-NLS-1$
		}
	},
	MESSAGE_AD_NOT_OPENED
	{
		@Override
		public String getErrorMessage()
		{
			return "L'annonce est terminée"; //$NON-NLS-1$
		}
	},
	MESSAGE_NOT_ALLOWED
	{
		@Override
		public String getErrorMessage()
		{
			return "Vous n'êtes pas autorisé à contacter cette personne"; //$NON-NLS-1$
		}
	},
	MESSAGE_INVALID_SUBJECT
	{
		@Override
		public String getErrorMessage()
		{
			return "Le sujet du message ne peut pas être vide"; //$NON-NLS-1$
		}
	},
	MESSAGE_INVALID_MESSAGE
	{
		@Override
		public String getErrorMessage()
		{
			return "Le message ne peut pas être vide"; //$NON-NLS-1$
		}
	},
	ADS_STATE_INVALID_ID
	{
		@Override
		public String getErrorMessage()
		{
			return "Le numéro d'annonce n'est pas valide"; //$NON-NLS-1$
		}
	},
	ADS_STATE_INVALID_TYPE
	{
		@Override
		public String getErrorMessage()
		{
			return "Le type de l'annonce n'est pas valide"; //$NON-NLS-1$
		}
	},
	ADS_STATE_INVALID_ACTION
	{
		@Override
		public String getErrorMessage()
		{
			return "L'action à appliquer au message est invalide"; //$NON-NLS-1$
		}
	},
	ADS_STATE_INVALID_RATING
	{
		@Override
		public String getErrorMessage()
		{
			return "La note est invalide"; //$NON-NLS-1$
		}
	},
	ADS_STATE_INVALID_USER
	{
		@Override
		public String getErrorMessage()
		{
			return "Le nom d'utilisateur de l'acheteur/vendeur est invalide"; //$NON-NLS-1$
		}
	};
	/**
	 * Returns the string associated to the error type.
	 * 
	 * @return the string associated to the error type
	 */
	public abstract String getErrorMessage();
}


